高性能なハードウェアでは、スピードが命です。GPUが Zバッファリングを行うとします。1秒間に数百万の深度値をソートして、どのピクセルが手前にあるかを決定しなければなりません。この目的を達成するため、エンジニアたちは 符号なし数比較回路という簡素化された回路に頼っています。これは上位ビット(MSB)から下位ビット(LSB)へとビットを処理し、認知的なオーバーヘッドゼロで動作します。
2進補数表現の失敗
標準的な2進補数表現はこの「単純なハードウェア」テストに失敗します。負の数の符号ビットが1で、正の数の符号ビットが0であるため、-1(111...)はビット列として+1(001...)よりも大きくなるのです。これにより 不連続性が生じ、ハードウェアは複雑で遅い条件分岐論理を使って数値の大きさを判断しなければならなくなります。
単調性による解決法
効率を回復させるために、私たちは 過剰符号化(エクセス符号化) (バイアス表現)を使用します。最小値が 000... に、最大値が 111...にマッピングされるように範囲をシフトすることで、ビットパターンが数値を一意に特定できるようにし、その 辞書順 が数値順序と正確に一致するように保証します。
この特性により、『単純な』ハードウェア比較器が『スマートな』浮動小数点データを即座に処理できます。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>